package $2_1oo;

public class StaticFunction {

    public static void main(String[] args) {
        // 静态字段和静态方法
        // 用static修饰的字段，称为静态字段：static field。
        // 所有实例共享一个静态字段。

        Personl ming = new Personl("Xiao Ming", 12);
        Personl hong = new Personl("Xiao Hong", 15);
        ming.number = 88;
        System.out.println(hong.number);
        hong.number = 99;
        System.out.println(ming.number);
        
        // 静态方法。用static修饰的方法称为静态方法。
        Personl.setNumber(91);
        System.out.println(Personl.number);
        System.out.println(ming.number);
        
        // 因为interface是一个纯抽象类，所以它不能定义实例字段。
        // 但是，interface是可以有静态字段的，并且静态字段必须为final类型
    }
    
    public interface Personl1 {
        public static final int MALE = 1;
        public static final int FEMALE = 2;
    }
    // 因为interface的字段只能是public static final类型，
    // 所以我们可以把这些修饰符都去掉
    // 上述代码可以简写为:
    public interface Personl2 {
        // 编译器会自动加上public statc final:
        int MALE = 1;
        int FEMALE = 2;
    }
}

class Personl {
    public String name;
    public int age;
    // 定义静态字段number:
    public static int number;
    public Personl(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public static void setNumber(int value) {
        number = value;
    }
}
